package JZOffer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @author Lw中
 * @date 2021/8/20 22:02
 */
public class Jz57 {

    // Jz57.和为s的两个数字
    public int[] twoSum(int[] nums, int target) {
        // 方法一：创建map集合将数组元素存储
//        HashMap<Integer, Integer> map = new HashMap<>();
//        for (int i = 0; i < nums.length; i++) {
//            // 数组元素作为key,下标作为value
//            map.put(nums[i], i);
//        }
//        for (int i = 0; i < nums.length; i++) {
//            int number = target - nums[i];
//            if(map.containsKey(number) && number != nums[i]) {
//                return new int[] {number, nums[i]};
//            }
//        }
//        return new int[0];

        // 方法二：使用双指针
        int i = 0, j = nums.length - 1;
        while (i < j) {
            int sum = nums[i] + nums[j];
            if (sum < target) i++;
            else if (sum > target) j--;
            else return new int[] {nums[i], nums[j]};
        }
        return new int[0];
    }

}
